package com.monkeyboy.spring.service;

import com.monkeyboy.spring.utils.CglibUtil;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

/**
 * @Author Gavin
 * @date 2021.02.21 11:10
 */

/**
 * 注意，类似这种自己扩展的类不要用spring注解，因为spring注解的需要被扫描到才能被spring管理，
 * 假如我们自己开发一个sdk包给别人项目中的spring项目使用，可能别人项目中扫描的包路径和你的不同那么这个类就不会被spring管理
 * 应该使用@import注解导入该类来让spring管理
 *
 */
public class CustomBeanPostProcessor implements BeanPostProcessor {
	@Override
	public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
		if (bean instanceof UserService) {
			Object proxy = CglibUtil.getProxy();//通过调用后置处理器返回代理对象，这也是spring aop的核心逻辑
			return proxy;
		}
		return bean;
	}
}
